정규화(Normalization)5 - BCNF :: DB에 대한 글들을 모았습니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

DB에 대한 글들을 모았습니다.
[1]
등록일:2009-04-18 22:37:18 (0%)
작성자:
제목:정규화(Normalization)5 - BCNF

보이스코드 정규형(Boyce - Codd Nomal Form : BCNF)

 

- 보이스(R.F. Boyce)와 코드(E.F. Codd)가 개발한 정규형.

- 제3정규형(3NF)을 확장한 것으로 이 정규형에 가까워질수록 데이터의 중복성이 배제되어

  갱신 시에 부정합 또는 불일치가 잘 생기지 않는다.

 

 

 

Example 분석

 

 

 

step 1.  기본조건 분석                     

 

- <수강>테이블에 나타난 함수적 종속성

 

 

           (학번, 과목) → (강사)

           (강사) → (과목)

 

 

 

 

- 제 3 정규형을 만족하고 있다 <- (강사)는 (학번)이나 (과목)에 함수적으로 종속하지

  않으며, 따라서 (강사)는 기본키인 (학번, 과목)에 완전하게 함수적으로 종속하고 있다.

  - <수강>테이블의 후보키는 (학번, 과목), (학번, 강사)

 

 

step 2. 모든 결정자의 후보키 여부

 

- (학번, 과목)은 결정자이면서 후보키이다.(<- 기본키이므로 당연히 후보키)

- (강사)는 결정자이면서 후보키가 아니다.

- 따라서, <수강>테이블은 제 3 정규형이면서, BCNF는 아니다.

 

 

step 3. <수강>테이블에 대한 갱신이상 분석

 

◑ 수정이상(Modification Anomaly)

   - 예를 들어, ‘노련한’ 강사의 ‘데이터베이스’강좌를 수강하는 학생이 많은 경우,

     수강학생 수만큼 강사명의 정보가 중복하여 나타남 -> 수정이상 발생 가능성

 

◑ 삭제이상(Deletion Anomaly)

   - 학생이 한 명인 강좌의 경우, 학생정보 삭제 시 강사정보도 완전 삭제됨

 

◑ 삽입이상(Insertion Anomaly)

   - 학번이 기본키 구성요소이므로 미개설강좌에 대한 강사정보 삽입 불가능

 

 

step 4. <학생>테이블에 대한 갱신이상 발생 원인

 

- 후보키가 아닌 애트리뷰트가 다른 애트리뷰트의 결정자이기 때문

- 후보키가 여러 개인 경우 발생하는 현상으로, 만약 하나의 후보키만을 가진 릴레이션이

  제3정규형을 만족하면 동시에 BCNF도 만족함

 

 

step 5. <학생>테이블에 대한 갱신이상 해결책

 

키가 아니면서 결정자 역할을 하는 애트리뷰트와 그 결정자에 함수적으로 종속하는 애트

   리뷰트로 하나의 테이블을 구성. 이 테이블에서 결정자는 기본키가 됨

기존 릴레이션에 결정자를 남겨서 기본키의 구성요소가 되도록 함. 또한 이 결정자는

   새로운 릴레이션에 대한 외래키 역할도 함

 

 


 

 

   - 모든 결정자가 후보키가 되도록 한다

[본문링크] 정규화(Normalization)5 - BCNF
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31469
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.